transactions
Get Transactions
Overview
Returns a paginated, date-bounded list of money transfers involving the authenticated vendor's wallet.
The staging environment for the VCash API is located at: https://staging.api.vcash.rs
Authentication
All requests to the vendor agent API are authenticated with the same wallet
API key the vendor already uses for the existing integration. (if you have a custom integration, we can still issue an API key for the sole purpose of calling this new API)
The API key is sent on every request in the secret HTTP header:
secret: <YOUR_WALLET_API_KEY>
Unless you request us to change the defaults, do not use the "Bearer" prefix,
do not use the Authorization header. The header format is:
secret: <your-api-key>
If the API key is missing, malformed, expired, or the source IP is not allowed
by the wallet's IP whitelist (see IP whitelist), the API
responds with 401 Unauthorized.
Endpoint
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
dateFrom | ISO-8601 date | yes | Inclusive lower bound on the transfer's insertDate (UTC). |
dateTo | ISO-8601 date | yes | Inclusive upper bound on the transfer's insertDate (UTC). Must be >= dateFrom. The window may not exceed 92 days. |
pageNo | integer | no | 1-based page number. Defaults to 1. |
pageSize | integer | no | Page size. Defaults to 20. Maximum allowed value is 500. |
typeCode | enum (repeated) | no | Filter by money transfer type. One or more of: VOUCHER, DIRECT_TRANSFER, MANUAL_TRANSFER. Repeat the parameter for multiple values. |
statusCode | enum (repeated) | no | Filter by transfer status. One or more of: PENDING_APPROVAL, PENDING_ACTIVATION, APPROVED, REJECTED, CLOSED, COMPLETED, REFUNDED, ERROR. |
moneyTransferCode | string | no | Look up a single transfer by its money transfer code. |
voucherCode | string | no | Look up a single voucher by its voucher code. |
amountFrom | decimal | no | Inclusive lower bound on the transfer amount. |
amountTo | decimal | no | Inclusive upper bound on the transfer amount. |
Example request
curl -G "https://<vcash-host>/agent/transactions" \
-H "secret: $VCASH_WALLET_API_KEY" \
--data-urlencode "dateFrom=2026-05-01T00:00:00Z" \
--data-urlencode "dateTo=2026-05-12T23:59:59Z" \
--data-urlencode "statusCode=COMPLETED" \
--data-urlencode "typeCode=VOUCHER" \
--data-urlencode "pageNo=1" \
--data-urlencode "pageSize=100"
Response
200 OK with the following JSON body:
{
"page": {
"pageNo": 1,
"pageSize": 100,
"pageCount": 3,
"itemsOnPage": 100,
"itemsCount": 247
},
"summary": {
"pageSumAmount": 154300.00,
"pageSuccessSumAmount": 152100.00,
"pageSuccessCount": 98,
"totalSumAmount": 412900.00,
"totalSuccessSumAmount": 405250.00,
"totalSuccessCount": 240
},
"transactions": [
{
"moneyTransferId": "f32cba48-2cc6-4a2f-9b3f-9d4ddc9d2110",
"moneyTransferCode": "MT-202605-000123",
"typeCode": "VOUCHER",
"from": {
"walletId": 10570,
"company": "Acme Vendor",
"identifier": null,
"agentTypeCode": "VENDOR"
},
"to": {
"walletId": 10500,
"company": "Downtown Cashier Co.",
"identifier": "user-12345",
"agentTypeCode": "CASHIER"
},
"amount": 1500.00,
"currencyCode": "RSD",
"statusCode": "COMPLETED",
"date": "2026-05-12T13:42:08Z",
"cashier": {
"cashierId": "9c1c7b8a-0c41-4b8f-8a3a-1c4f9d0d3a11",
"fullName": "Marija Petrović"
},
"venue": {
"venueId": 4711,
"name": "Downtown Branch",
"address": "Knez Mihailova 1",
"city": "Belgrade"
},
"voucherCode": "VC-AB12-CD34-EF56",
"voucherTypeCode": "STANDARD_VOUCHER"
}
]
}
Field reference
page
| Field | Description |
|---|---|
pageNo | The page number returned (1-based). |
pageSize | Page size in effect for this response. |
pageCount | Total number of pages available for the current filter. |
itemsOnPage | Number of transactions in transactions[]. |
itemsCount | Total number of transactions matching the filter across all pages. |
summary
| Field | Description |
|---|---|
pageSumAmount | Sum of amount for the current page. |
pageSuccessSumAmount | Sum of amount for the current page, restricted to non-failed transfers (excludes ERROR, REFUNDED, REJECTED). |
pageSuccessCount | Count of non-failed transfers in the current page. |
totalSumAmount | Sum of amount across the full filter (all pages). |
totalSuccessSumAmount | Sum of amount across the full filter, restricted to non-failed transfers. |
totalSuccessCount | Count of non-failed transfers across the full filter. |
transactions[]
| Field | Description |
|---|---|
moneyTransferId | Stable UUID of the transfer. |
moneyTransferCode | Human-readable transfer code (also used as a reconciliation key). |
typeCode | One of VOUCHER, DIRECT_TRANSFER, MANUAL_TRANSFER. |
from | Sending wallet/agent. walletId matches the vendor's own wallet for outgoing transfers (e.g. vendor-issued vouchers). |
to | Receiving wallet/agent. walletId matches the vendor's own wallet for incoming transfers. |
amount | Decimal amount in currencyCode. |
currencyCode | ISO-4217 currency code. |
statusCode | Current status of the transfer; see the statusCode filter values above. |
date | UTC timestamp the transfer was created. |
cashier | Cashier that processed the transfer at the venue, when applicable. |
venue | Venue at which the transfer was processed, when applicable. |
voucherCode | Present for voucher-type transfers. Use this when reconciling against a vendor-issued voucher. |
voucherTypeCode | Present for voucher-type transfers (e.g. STANDARD_VOUCHER). |
Errors
| HTTP status | Code | When |
|---|---|---|
| 400 | MANDATORY_FIELD | dateFrom or dateTo was not supplied. |
| 400 | INVALID_VALUE | dateFrom > dateTo, the window exceeds 92 days, or pageNo/pageSize are out of range. |
| 401 | — | The secret header is missing, the API key is invalid/expired, or the source IP is not in the configured whitelist for the wallet. |
Notes for integrators
- Pagination: iterate while
pageNo < page.pageCount. Always supplypageSizeexplicitly so a future change to the default does not silently alter pagination behavior. - Idempotency: this is a pure read endpoint and is safe to retry.
- Time zone: all timestamps in the response are UTC.